\section{Introduction}
\label{sec:intro}

In this assignment we parallelized particle simulation for a GPU using CUDA~\cite{cuda:10, nbody}. Using a naive $O(n^2)$ parallel implementation in CUDA along with an $O(n)$ serial implementation as guides, we used a binning approach to implement a parallel particle simulation in CUDA that is also $O(n)$.  We first discuss a serial binning implementation and then discuss how we ported the binning approach to work on a GPU.  